#pragma once

#include <vector>

#include <stdexcept>
#include <opencv2/opencv.hpp>
#include <opencv2/core/utils/logger.hpp>

namespace YQ {

using std::vector;
using std::runtime_error;
using std::logic_error;

using cv::VideoCapture;
using cv::Mat;

struct VideoSize {
	VideoSize() = default;
	VideoSize (int width, int height);
	int width = 640;
	int height = 480;
};


Mat getAnImageFromVideo (VideoCapture &video) noexcept (false);
VideoSize getVideoSize (VideoCapture &video) noexcept (false);
VideoCapture getDefaultCamera() noexcept (false);
VideoSize getCameraSize (VideoCapture &camera) noexcept (false);
VideoSize getCameraSize (VideoCapture &&camera) noexcept (false);
vector<int> getAvailableCameraId ();

}